package com.wenwu.common.bean;

import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;

public class RelicsProtectBasicExample {
    protected String orderByClause;

    protected boolean distinct;

    protected List<Criteria> oredCriteria;

    public RelicsProtectBasicExample() {
        oredCriteria = new ArrayList<Criteria>();
    }

    public void setOrderByClause(String orderByClause) {
        this.orderByClause = orderByClause;
    }

    public String getOrderByClause() {
        return orderByClause;
    }

    public void setDistinct(boolean distinct) {
        this.distinct = distinct;
    }

    public boolean isDistinct() {
        return distinct;
    }

    public List<Criteria> getOredCriteria() {
        return oredCriteria;
    }

    public void or(Criteria criteria) {
        oredCriteria.add(criteria);
    }

    public Criteria or() {
        Criteria criteria = createCriteriaInternal();
        oredCriteria.add(criteria);
        return criteria;
    }

    public Criteria createCriteria() {
        Criteria criteria = createCriteriaInternal();
        if (oredCriteria.size() == 0) {
            oredCriteria.add(criteria);
        }
        return criteria;
    }

    protected Criteria createCriteriaInternal() {
        Criteria criteria = new Criteria();
        return criteria;
    }

    public void clear() {
        oredCriteria.clear();
        orderByClause = null;
        distinct = false;
    }

    protected abstract static class GeneratedCriteria {
        protected List<Criterion> criteria;

        protected GeneratedCriteria() {
            super();
            criteria = new ArrayList<Criterion>();
        }

        public boolean isValid() {
            return criteria.size() > 0;
        }

        public List<Criterion> getAllCriteria() {
            return criteria;
        }

        public List<Criterion> getCriteria() {
            return criteria;
        }

        protected void addCriterion(String condition) {
            if (condition == null) {
                throw new RuntimeException("Value for condition cannot be null");
            }
            criteria.add(new Criterion(condition));
        }

        protected void addCriterion(String condition, Object value, String property) {
            if (value == null) {
                throw new RuntimeException("Value for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value));
        }

        protected void addCriterion(String condition, Object value1, Object value2, String property) {
            if (value1 == null || value2 == null) {
                throw new RuntimeException("Between values for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value1, value2));
        }

        protected void addCriterionForJDBCDate(String condition, Date value, String property) {
            if (value == null) {
                throw new RuntimeException("Value for " + property + " cannot be null");
            }
            addCriterion(condition, new java.sql.Date(value.getTime()), property);
        }

        protected void addCriterionForJDBCDate(String condition, List<Date> values, String property) {
            if (values == null || values.size() == 0) {
                throw new RuntimeException("Value list for " + property + " cannot be null or empty");
            }
            List<java.sql.Date> dateList = new ArrayList<java.sql.Date>();
            Iterator<Date> iter = values.iterator();
            while (iter.hasNext()) {
                dateList.add(new java.sql.Date(iter.next().getTime()));
            }
            addCriterion(condition, dateList, property);
        }

        protected void addCriterionForJDBCDate(String condition, Date value1, Date value2, String property) {
            if (value1 == null || value2 == null) {
                throw new RuntimeException("Between values for " + property + " cannot be null");
            }
            addCriterion(condition, new java.sql.Date(value1.getTime()), new java.sql.Date(value2.getTime()), property);
        }

        public Criteria andProtectBasicIdIsNull() {
            addCriterion("protect_basic_id is null");
            return (Criteria) this;
        }

        public Criteria andProtectBasicIdIsNotNull() {
            addCriterion("protect_basic_id is not null");
            return (Criteria) this;
        }

        public Criteria andProtectBasicIdEqualTo(Integer value) {
            addCriterion("protect_basic_id =", value, "protectBasicId");
            return (Criteria) this;
        }

        public Criteria andProtectBasicIdNotEqualTo(Integer value) {
            addCriterion("protect_basic_id <>", value, "protectBasicId");
            return (Criteria) this;
        }

        public Criteria andProtectBasicIdGreaterThan(Integer value) {
            addCriterion("protect_basic_id >", value, "protectBasicId");
            return (Criteria) this;
        }

        public Criteria andProtectBasicIdGreaterThanOrEqualTo(Integer value) {
            addCriterion("protect_basic_id >=", value, "protectBasicId");
            return (Criteria) this;
        }

        public Criteria andProtectBasicIdLessThan(Integer value) {
            addCriterion("protect_basic_id <", value, "protectBasicId");
            return (Criteria) this;
        }

        public Criteria andProtectBasicIdLessThanOrEqualTo(Integer value) {
            addCriterion("protect_basic_id <=", value, "protectBasicId");
            return (Criteria) this;
        }

        public Criteria andProtectBasicIdIn(List<Integer> values) {
            addCriterion("protect_basic_id in", values, "protectBasicId");
            return (Criteria) this;
        }

        public Criteria andProtectBasicIdNotIn(List<Integer> values) {
            addCriterion("protect_basic_id not in", values, "protectBasicId");
            return (Criteria) this;
        }

        public Criteria andProtectBasicIdBetween(Integer value1, Integer value2) {
            addCriterion("protect_basic_id between", value1, value2, "protectBasicId");
            return (Criteria) this;
        }

        public Criteria andProtectBasicIdNotBetween(Integer value1, Integer value2) {
            addCriterion("protect_basic_id not between", value1, value2, "protectBasicId");
            return (Criteria) this;
        }

        public Criteria andAreaIsNull() {
            addCriterion("area is null");
            return (Criteria) this;
        }

        public Criteria andAreaIsNotNull() {
            addCriterion("area is not null");
            return (Criteria) this;
        }

        public Criteria andAreaEqualTo(String value) {
            addCriterion("area =", value, "area");
            return (Criteria) this;
        }

        public Criteria andAreaNotEqualTo(String value) {
            addCriterion("area <>", value, "area");
            return (Criteria) this;
        }

        public Criteria andAreaGreaterThan(String value) {
            addCriterion("area >", value, "area");
            return (Criteria) this;
        }

        public Criteria andAreaGreaterThanOrEqualTo(String value) {
            addCriterion("area >=", value, "area");
            return (Criteria) this;
        }

        public Criteria andAreaLessThan(String value) {
            addCriterion("area <", value, "area");
            return (Criteria) this;
        }

        public Criteria andAreaLessThanOrEqualTo(String value) {
            addCriterion("area <=", value, "area");
            return (Criteria) this;
        }

        public Criteria andAreaLike(String value) {
            addCriterion("area like", value, "area");
            return (Criteria) this;
        }

        public Criteria andAreaNotLike(String value) {
            addCriterion("area not like", value, "area");
            return (Criteria) this;
        }

        public Criteria andAreaIn(List<String> values) {
            addCriterion("area in", values, "area");
            return (Criteria) this;
        }

        public Criteria andAreaNotIn(List<String> values) {
            addCriterion("area not in", values, "area");
            return (Criteria) this;
        }

        public Criteria andAreaBetween(String value1, String value2) {
            addCriterion("area between", value1, value2, "area");
            return (Criteria) this;
        }

        public Criteria andAreaNotBetween(String value1, String value2) {
            addCriterion("area not between", value1, value2, "area");
            return (Criteria) this;
        }

        public Criteria andDelimitOrganIsNull() {
            addCriterion("delimit_organ is null");
            return (Criteria) this;
        }

        public Criteria andDelimitOrganIsNotNull() {
            addCriterion("delimit_organ is not null");
            return (Criteria) this;
        }

        public Criteria andDelimitOrganEqualTo(String value) {
            addCriterion("delimit_organ =", value, "delimitOrgan");
            return (Criteria) this;
        }

        public Criteria andDelimitOrganNotEqualTo(String value) {
            addCriterion("delimit_organ <>", value, "delimitOrgan");
            return (Criteria) this;
        }

        public Criteria andDelimitOrganGreaterThan(String value) {
            addCriterion("delimit_organ >", value, "delimitOrgan");
            return (Criteria) this;
        }

        public Criteria andDelimitOrganGreaterThanOrEqualTo(String value) {
            addCriterion("delimit_organ >=", value, "delimitOrgan");
            return (Criteria) this;
        }

        public Criteria andDelimitOrganLessThan(String value) {
            addCriterion("delimit_organ <", value, "delimitOrgan");
            return (Criteria) this;
        }

        public Criteria andDelimitOrganLessThanOrEqualTo(String value) {
            addCriterion("delimit_organ <=", value, "delimitOrgan");
            return (Criteria) this;
        }

        public Criteria andDelimitOrganLike(String value) {
            addCriterion("delimit_organ like", value, "delimitOrgan");
            return (Criteria) this;
        }

        public Criteria andDelimitOrganNotLike(String value) {
            addCriterion("delimit_organ not like", value, "delimitOrgan");
            return (Criteria) this;
        }

        public Criteria andDelimitOrganIn(List<String> values) {
            addCriterion("delimit_organ in", values, "delimitOrgan");
            return (Criteria) this;
        }

        public Criteria andDelimitOrganNotIn(List<String> values) {
            addCriterion("delimit_organ not in", values, "delimitOrgan");
            return (Criteria) this;
        }

        public Criteria andDelimitOrganBetween(String value1, String value2) {
            addCriterion("delimit_organ between", value1, value2, "delimitOrgan");
            return (Criteria) this;
        }

        public Criteria andDelimitOrganNotBetween(String value1, String value2) {
            addCriterion("delimit_organ not between", value1, value2, "delimitOrgan");
            return (Criteria) this;
        }

        public Criteria andPublishOrganIsNull() {
            addCriterion("publish_organ is null");
            return (Criteria) this;
        }

        public Criteria andPublishOrganIsNotNull() {
            addCriterion("publish_organ is not null");
            return (Criteria) this;
        }

        public Criteria andPublishOrganEqualTo(String value) {
            addCriterion("publish_organ =", value, "publishOrgan");
            return (Criteria) this;
        }

        public Criteria andPublishOrganNotEqualTo(String value) {
            addCriterion("publish_organ <>", value, "publishOrgan");
            return (Criteria) this;
        }

        public Criteria andPublishOrganGreaterThan(String value) {
            addCriterion("publish_organ >", value, "publishOrgan");
            return (Criteria) this;
        }

        public Criteria andPublishOrganGreaterThanOrEqualTo(String value) {
            addCriterion("publish_organ >=", value, "publishOrgan");
            return (Criteria) this;
        }

        public Criteria andPublishOrganLessThan(String value) {
            addCriterion("publish_organ <", value, "publishOrgan");
            return (Criteria) this;
        }

        public Criteria andPublishOrganLessThanOrEqualTo(String value) {
            addCriterion("publish_organ <=", value, "publishOrgan");
            return (Criteria) this;
        }

        public Criteria andPublishOrganLike(String value) {
            addCriterion("publish_organ like", value, "publishOrgan");
            return (Criteria) this;
        }

        public Criteria andPublishOrganNotLike(String value) {
            addCriterion("publish_organ not like", value, "publishOrgan");
            return (Criteria) this;
        }

        public Criteria andPublishOrganIn(List<String> values) {
            addCriterion("publish_organ in", values, "publishOrgan");
            return (Criteria) this;
        }

        public Criteria andPublishOrganNotIn(List<String> values) {
            addCriterion("publish_organ not in", values, "publishOrgan");
            return (Criteria) this;
        }

        public Criteria andPublishOrganBetween(String value1, String value2) {
            addCriterion("publish_organ between", value1, value2, "publishOrgan");
            return (Criteria) this;
        }

        public Criteria andPublishOrganNotBetween(String value1, String value2) {
            addCriterion("publish_organ not between", value1, value2, "publishOrgan");
            return (Criteria) this;
        }

        public Criteria andPublishDateIsNull() {
            addCriterion("publish_date is null");
            return (Criteria) this;
        }

        public Criteria andPublishDateIsNotNull() {
            addCriterion("publish_date is not null");
            return (Criteria) this;
        }

        public Criteria andPublishDateEqualTo(Date value) {
            addCriterionForJDBCDate("publish_date =", value, "publishDate");
            return (Criteria) this;
        }

        public Criteria andPublishDateNotEqualTo(Date value) {
            addCriterionForJDBCDate("publish_date <>", value, "publishDate");
            return (Criteria) this;
        }

        public Criteria andPublishDateGreaterThan(Date value) {
            addCriterionForJDBCDate("publish_date >", value, "publishDate");
            return (Criteria) this;
        }

        public Criteria andPublishDateGreaterThanOrEqualTo(Date value) {
            addCriterionForJDBCDate("publish_date >=", value, "publishDate");
            return (Criteria) this;
        }

        public Criteria andPublishDateLessThan(Date value) {
            addCriterionForJDBCDate("publish_date <", value, "publishDate");
            return (Criteria) this;
        }

        public Criteria andPublishDateLessThanOrEqualTo(Date value) {
            addCriterionForJDBCDate("publish_date <=", value, "publishDate");
            return (Criteria) this;
        }

        public Criteria andPublishDateIn(List<Date> values) {
            addCriterionForJDBCDate("publish_date in", values, "publishDate");
            return (Criteria) this;
        }

        public Criteria andPublishDateNotIn(List<Date> values) {
            addCriterionForJDBCDate("publish_date not in", values, "publishDate");
            return (Criteria) this;
        }

        public Criteria andPublishDateBetween(Date value1, Date value2) {
            addCriterionForJDBCDate("publish_date between", value1, value2, "publishDate");
            return (Criteria) this;
        }

        public Criteria andPublishDateNotBetween(Date value1, Date value2) {
            addCriterionForJDBCDate("publish_date not between", value1, value2, "publishDate");
            return (Criteria) this;
        }
    }

    public static class Criteria extends GeneratedCriteria {

        protected Criteria() {
            super();
        }
    }

    public static class Criterion {
        private String condition;

        private Object value;

        private Object secondValue;

        private boolean noValue;

        private boolean singleValue;

        private boolean betweenValue;

        private boolean listValue;

        private String typeHandler;

        public String getCondition() {
            return condition;
        }

        public Object getValue() {
            return value;
        }

        public Object getSecondValue() {
            return secondValue;
        }

        public boolean isNoValue() {
            return noValue;
        }

        public boolean isSingleValue() {
            return singleValue;
        }

        public boolean isBetweenValue() {
            return betweenValue;
        }

        public boolean isListValue() {
            return listValue;
        }

        public String getTypeHandler() {
            return typeHandler;
        }

        protected Criterion(String condition) {
            super();
            this.condition = condition;
            this.typeHandler = null;
            this.noValue = true;
        }

        protected Criterion(String condition, Object value, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.typeHandler = typeHandler;
            if (value instanceof List<?>) {
                this.listValue = true;
            } else {
                this.singleValue = true;
            }
        }

        protected Criterion(String condition, Object value) {
            this(condition, value, null);
        }

        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.secondValue = secondValue;
            this.typeHandler = typeHandler;
            this.betweenValue = true;
        }

        protected Criterion(String condition, Object value, Object secondValue) {
            this(condition, value, secondValue, null);
        }
    }
}